package com.itheima.dao;


import com.itheima.pojo.Emp;

import java.util.List;

/**
 * controller：控制层，接收前端发送的请求，对请求进行处理，并响应数据。
 * service：业务逻辑层，处理具体的业务逻辑。
 * dao：数据访问层(Data Access Object)（持久层），负责数据访问操作，包括数据的增、删、改、查。
 *
 * 分析：我们所编写的dao层代码最终是要被service层调用的，而数据访问层dao层的实现方式有很多，比如访问的可能是文件当中的数据，
 *      又或者访问的是数据库中的数据，也有可能访问的是别人给我们提供的一个接口获取到的数据，而我们想要能够灵活的切换各种实现
 *      方式，可以通过面向接口的方式进行编程，所以在编写dao层的具体实现之前，需要先定义一个dao层的一个接口，来增强程序的
 *      灵活性和扩展性
 *
 * 弹幕；面对抽象接口编程.设计模式一般都是这个思路
 *      注意这里的接口方法不是abstract修饰的抽象方法，类似阿伟以前说过的设计模式
 *      面向接口的设计原则，增强程序的灵活性
 *      大概懂了，就是先创建一个接口限制一下方法名和返回结果，具体是从数据库还是文件取从具体继承的类中实现
 *      建一个DAO包，包下面放着每个pojo类的接口，接口中概述了这个类要实现哪些方法，在Dao下建impl包，包里面新建的类要继承以DAO结尾的接口，并实现其中的方法。
 *      如果之前没学确实听的云里雾里的，我本身有基础感觉讲的的不太好
 *      接口给定规范，在编写实现类时，有更清晰的逻辑
 *      接口可以降低耦合度,接口定义方法,下层实现就行,需要修改的时候只要修改下层就行
 *      用接口是因為只需要定義框架，實現類可以有很多種類型
 *这个弹幕说得好：
 *      接口多态性，empdao接口只关心获取到的数据不关心怎样获取，emdaoA实现类处理xml数据，而不是别的数据库之类的
 *
 */
public interface EmpDao {
    //获取员工列表数据
    public List<Emp> listEmp();
}
